package com.group.itms.routes.map;

import java.util.List;

import com.group.itms.routes.map.Layer.Type;

public interface Map {
	
	void setMapType(MapType type);
	
	void setBounds(Bounds bounds);
	
	void addLayers(List<Layer> layers);
	
	void setMapInternal(Object map);

	void setMyLocation();

	void setZoom(float zoom);
	
	void addLayer(Layer layer);

	void removeLayer(Layer layer);

	void removeAllLayer();

	IMarker addMarker(double x, double y, int icId, Layer layer);

	void setLayerVisibility(Layer layer, boolean visible);
	
	void setLayerTypeVisibility(Type type, boolean visible);

	void goToRoutes();

	void goToMyLocation();
	
	void traceMyLocation(boolean yesNo, int period);
	
	void clearMap();
	
	void drawOnMap();
	
	void reDraw();
	
	void setLayersChangedListener();
	
	LayersChangedListener getLayersChangedListener();

	public interface LayersChangedListener {
		void OnLayerChanged(Layer layer);
		void OnLayerListChanged(List<Layer> layers);
	}
	
	static enum MapType{
		
		Hybrid,Normal,Stallite,Terrain,
	}
}
